package com.javafun.timetracking.ui.action; import org.eclipse.jface.action.Action; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.rwt.RWT; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PartInitException; import org.eclipse.ui.plugin.AbstractUIPlugin; import com.javafun.timetracking.model.User; import com.javafun.timetracking.ui.ICommandIds; /** * When run, this action will open another instance of a view. */ public class OpenViewAction extends Action { private final IWorkbenchWindow window; private int instanceNum = 0; private final String viewId; public OpenViewAction(IWorkbenchWindow window, String label, String viewId) { this.window = window; this.viewId = viewId; setText(label); // The id is used to refer to the action in a menu or toolbar setId(ICommandIds.CMD_OPEN); // Associate the action with a pre-defined command, to allow key bindings. setActionDefinitionId(ICommandIds.CMD_OPEN); setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin("com.javafun.core", "/icons/sample2.gif")); } public void run() { if (window != null) { try { window.getActivePage().showView(viewId, Integer.toString(instanceNum++), IWorkbenchPage.VIEW_ACTIVATE); } catch (PartInitException e) { MessageDialog.openError(window.getShell(), "Error", "Error opening view:" + e.getMessage()); } } } @Override public boolean isEnabled() { User user = (User) RWT.getSessionStore().getHttpSession().getAttribute("user"); return user != null; } }